﻿<Window x:Class="DrawingIn3D.ElementsIn3D"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ElementsIn3D" Height="450" Width="450"
        xmlns:tools="clr-namespace:_3DTools;assembly=3DTools"
    >
  
    
  
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition></RowDefinition>
      <RowDefinition Height="Auto"></RowDefinition>
    </Grid.RowDefinitions>

    <Border BorderBrush="Yellow" BorderThickness="1" Margin="5">
      <tools:TrackballDecorator>

        <Viewport3D>
        <Viewport3D.Camera>
          <PerspectiveCamera          
          LookDirection="2,-1,-1"
          UpDirection="0,1,0"
          Position="-20,15,15"
          NearPlaneDistance="1"
          FarPlaneDistance="100"
          FieldOfView="40"
            >

          </PerspectiveCamera>
        </Viewport3D.Camera>
          
          <ModelVisual3D>
          <ModelVisual3D.Content>
            <DirectionalLight
             Color="White"
             Direction="-2,-3,-1" />
          </ModelVisual3D.Content>
        </ModelVisual3D>

        <ModelVisual3D>
          <ModelVisual3D.Content>            
            <DirectionalLight
             Color="White"
             Direction="2,1,1" />
          </ModelVisual3D.Content>
        </ModelVisual3D>

        <ModelVisual3D>
          <ModelVisual3D.Content>
            <GeometryModel3D>
              <GeometryModel3D.Geometry>
                <MeshGeometry3D Positions="0,0,0 10,0,0 0,10,0 10,10,0
                                           0,0,10 10,0,10 0,10,10 10,10,10"
                      TriangleIndices="0,2,1 1,2,3 
                                                 0,1,4 1,5,4 1,7,5 1,3,7 
                                                 4,5,6 7,6,5 2,6,3 3,6,7"
                       Normals="0,1,0 0,1,0 1,0,0 1,0,0
                                 0,1,0 0,1,0 1,0,0 1,0,0" />

              </GeometryModel3D.Geometry>
              <GeometryModel3D.Material>
                <DiffuseMaterial Brush="LightBlue" />
              </GeometryModel3D.Material>
            </GeometryModel3D>
          </ModelVisual3D.Content>
          <ModelVisual3D.Transform>
            <RotateTransform3D>
              <RotateTransform3D.Rotation>
                <AxisAngleRotation3D Angle="{Binding ElementName=sliderRotate, Path=Value}"
                                     Axis="0 1 0" />
              </RotateTransform3D.Rotation>
            </RotateTransform3D>
          </ModelVisual3D.Transform>
        </ModelVisual3D>
		
		
		  <Viewport2DVisual3D>
            <Viewport2DVisual3D.Geometry>
							<MeshGeometry3D
                Positions="0,0,0 0,0,10 0,10,0 0,10,10"
               TriangleIndices="0,1,2 2,1,3"
               TextureCoordinates="0,1 1,1 0,0 1,0"
                               />
            </Viewport2DVisual3D.Geometry>

		    <Viewport2DVisual3D.Material>
				<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" />
      		</Viewport2DVisual3D.Material>

			<Viewport2DVisual3D.Visual>
				<Border BorderBrush="Yellow" BorderThickness="1">
					<StackPanel Margin="10">
						<TextBlock Margin="3">This is 2D content on a 3D surface.</TextBlock>
						<Button Margin="3" Click="cmd_Click">Click Me</Button>
						<TextBox Margin="3">[Enter Text Here]</TextBox>
					</StackPanel>
				</Border>
			</Viewport2DVisual3D.Visual>          
			
            <Viewport2DVisual3D.Transform>
			  <RotateTransform3D>
                <RotateTransform3D.Rotation>
                  <AxisAngleRotation3D Angle="{Binding ElementName=sliderRotate, Path=Value}" 
                                       Axis="0 1 0" />
                  </RotateTransform3D.Rotation>
              </RotateTransform3D>
            </Viewport2DVisual3D.Transform>            
          </Viewport2DVisual3D>

        </Viewport3D>    
  
        </tools:TrackballDecorator>
    </Border>


    <Slider Margin="5" Grid.Row="1"  Minimum="0" Maximum="360" Orientation="Horizontal"
              Name="sliderRotate" ></Slider>

  </Grid>
</Window>
